package com.hxkj.service;

import com.github.pagehelper.PageInfo;
import com.hxkj.domain.po.AdvertisementColumn;
import com.hxkj.domain.po.AdvertisementColumnTree;
import com.platform.common.domain.result.ResultDataStruct;
import com.platform.common.domain.result.ResultMessageStruct;
import com.platform.common.domain.to.PageTo;

import java.util.List;
import java.util.Map;

/**
 * @InterfaceName ColumnService
 * @Description
 * @Author chenfangzhou
 * @Date 2018/6/7 12:00
 * @Version 1.0
 */
public interface AdvertisementColumnService {
    
    /**
    * @author chenfangzhou
    * @Description saveColumn 新增分类
    * @Date 15:24 2018/6/7
    * @Param [column]
    * @return com.platform.common.domain.result.ResultMessageStruct
    **/
    ResultDataStruct saveColumn(AdvertisementColumn column) throws Exception;

    /**
    * @author chenfangzhou
    * @Description getColumnTreeList 获取分类树结构
    * @Date 15:47 2018/6/7
    * @Param [column]
    * @return com.hxkj.domain.po.AdvertisementColumnTree
    **/
    List<AdvertisementColumnTree> getColumnTreeList(AdvertisementColumn column) throws Exception;

    /**
    * @author chenfangzhou
    * @Description removerColumn 删除分类
    * @Date 16:04 2018/6/7
    * @Param [column]
    * @return com.platform.common.domain.result.ResultMessageStruct
    **/
    ResultMessageStruct removeColumn(AdvertisementColumn column) throws Exception;

    /**
    * @author chenfangzhou
    * @Description modifyColumn 修改分类
    * @Date 16:59 2018/6/7
    * @Param [column]
    * @return com.platform.common.domain.result.ResultMessageStruct
    **/
    ResultMessageStruct modifyColumn(AdvertisementColumn column) throws Exception;

    /**
     * @author chenfangzhou
     * @Description modifySortNum 修改分类排序
     * @Date 9:48 2018/6/8
     * @Param [map]
     * @return com.platform.common.domain.result.ResultMessageStruct
     **/
    ResultMessageStruct modifySortNum(Map<String, Object> map) throws Exception;

    /**
     * @author zzx
     * @Description getChildren  获取分类父类下所有得子类
     * @return
     **/
    List<AdvertisementColumn> getChildren(AdvertisementColumn column) throws Exception;

    /**
     * @author zzx
     * @Description 获取一条分类信息
     * @return
     **/
    AdvertisementColumn getColumn(AdvertisementColumn column) throws Exception;


    /**
     * 根据分类id获取该分类的最顶级分类对象
     */
    List<AdvertisementColumn> getTopParentColumn(AdvertisementColumn column) throws Exception;


    ResultDataStruct<List<AdvertisementColumn>> getColumnList(AdvertisementColumn column)throws Exception;

    /***
     * 根据columnId获取该分类一下的所有的column数据
     * **/
    ResultDataStruct<List<AdvertisementColumn>> getAllColumnList(AdvertisementColumn column) throws Exception;

    //分类模糊查询
    List<AdvertisementColumnTree> getColumnTreeListByKeyword(AdvertisementColumn column);
}
